package com.xialuo.study.tools;

import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/**
 * 日期时间工具，用于获取当前日期和时间
 */
@Component
@Slf4j
public class DateTimeTool{

    @Tool(description = "获取当前日期和时间。可以指定日期格式，例如 'yyyy-MM-dd' 或 'yyyy-MM-dd HH:mm:ss'")
    Response getCurrentDateTime(@ToolParam(description = "Time in ISO-8601 format")Request request) {
        log.info("获取当前日期和时间: {}", request.format());
        LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
        String formattedDateTime = now.format(DateTimeFormatter.ofPattern(request.format()));
        return new Response(formattedDateTime);
    }

    /**
     * 日期时间请求对象
     *
     * @param format 日期格式，例如 "yyyy-MM-dd" 或 "yyyy-MM-dd HH:mm:ss"
     */
    public record Request(String format) {
        public Request {
            if (format == null || format.isEmpty()) {
                format = "yyyy-MM-dd HH:mm:ss";
            }
        }
    }

    /**
     * 日期时间响应对象
     *
     * @param dateTime 格式化后的日期时间字符串
     */
    public record Response(String dateTime) {
    }
}
